package com.he.singtelonmodel.multihread;

/**
 * 多线程下的单例模式
 */
public class ThreadPerson {
    private static ThreadPerson PERSON;

    public static ThreadPerson getPerson() {
        //双重锁定，在PERSON对象为空时，才进入synchronized代码块，不为空时，直接返回（提高性能，不用每次进入方法都去获取对象锁）
        if (PERSON == null) {
            synchronized (Integer.valueOf(1)) {//从Integer整形池取对象，-128~127内的数字都是取同一个对象
                if (PERSON == null) {
                    PERSON = new ThreadPerson();
                }
            }
        }
        return PERSON;
    }

}